// Chained Menu

// Copyright Xin Yang 2004
// Web Site: www.yxScripts.com
// EMail: m_yangxin@hotmail.com
// Last Updated: 2004-08-23

// This script is free as long as the copyright notice remains intact.

var _disable_empty_list = false;
var _hide_empty_list = false;

// ------

///// DynamicDrive.com added function/////////////

var onclickaction = "alert";

function goListGroup() {
    for (i = arguments.length - 1; i >= 0; i--) {
        if (arguments[i].selectedIndex != -1) {
            var selectedOptionvalue = arguments[i].options[arguments[i].selectedIndex].value;
            if (selectedOptionvalue != "") {
                if (onclickaction == "alert") {                    
                    var obj = document.getElementById("selezione");
                    obj.setAttribute("value", selectedOptionvalue);
                    //alert(selectedOptionvalue);
                } else if (newwindow == 1)
                    window.open(selectedOptionvalue);
                else
                    window.location = selectedOptionvalue;
                break
            }
        }
    }
}

///// END DynamicDrive.com added function//////


if (typeof (disable_empty_list) == "undefined") {
    disable_empty_list = _disable_empty_list;
}
if (typeof (hide_empty_list) == "undefined") {
    hide_empty_list = _hide_empty_list;
}

var cs_goodContent = true, cs_M = "M", cs_L = "L", cs_curTop = null, cs_curSub = null;

function cs_findOBJ(obj, n) {
    for (var i = 0; i < obj.length; i++) {
        if (obj[i].name == n) {
            return obj[i];
        }
    }
    return null;
}
function cs_findContent(n) {
    return cs_findOBJ(cs_content, n);
}

function cs_findM(m, n) {
    if (m.name == n) {
        return m;
    }

    var sm = null;
    for (var i = 0; i < m.items.length; i++) {
        if (m.items[i].type == cs_M) {
            sm = cs_findM(m.items[i], n);
            if (sm != null) {
                break;
            }
        }
    }
    return sm;
}
function cs_findMenu(n) {
    return (cs_curSub != null && cs_curSub.name == n) ? cs_curSub : cs_findM(cs_curTop, n);
}

function cs_contentOBJ(n, obj) {
    this.name = n;
    this.menu = obj;
    this.lists = new Array();
    this.cookie = "";
}
;
cs_content = new Array();
function cs_topmenuOBJ(tm) {
    this.name = tm;
    this.items = new Array();
    this.df = 0;
    this.addM = cs_addM;
    this.addL = cs_addL;
}
function cs_submenuOBJ(dis, link, sub) {
    this.name = sub;
    this.type = cs_M;
    this.dis = dis;
    this.link = link;
    this.df = 0;

    var x = cs_findMenu(sub);
    this.items = x == null ? new Array() : x.items;

    this.addM = cs_addM;
    this.addL = cs_addL;
}
function cs_linkOBJ(dis, link) {
    this.type = cs_L;
    this.dis = dis;
    this.link = link;
}

function cs_addM(dis, link, sub) {
    this.items[this.items.length] = new cs_submenuOBJ(dis, link, sub);
}
function cs_addL(dis, link) {
    this.items[this.items.length] = new cs_linkOBJ(dis, link);
}

function cs_showMsg(msg) {
    window.status = msg;
}
function cs_badContent(n) {
    cs_goodContent = false;
    cs_showMsg("[" + n + "] Not Found.");
}

function cs_optionOBJ(text, value) {
    this.text = text;
    this.value = value;
}
function cs_emptyList(list) {
    for (var i = list.options.length - 1; i >= 0; i--) {
        list.options[i] = null;
    }
}
function cs_refreshList(list, opt, df) {
    cs_emptyList(list);

    for (var i = 0; i < opt.length; i++) {
        list.options[i] = new Option(opt[i].text, opt[i].value);
    }

    if (opt.length > 0) {
        list.selectedIndex = df;
    }
}
function cs_getOptions(menu) {
    var opt = new Array();
    for (var i = 0; i < menu.items.length; i++) {
        opt[i] = new cs_optionOBJ(menu.items[i].dis, menu.items[i].link);
    }
    return opt;
}
function cs_updateListGroup(content, idx, sidx, mode) {
    var i = 0, curItem = null, menu = content.menu;

    while (i < idx) {
        menu = menu.items[content.lists[i++].selectedIndex];
    }

    if (menu.items[sidx].type == cs_M && idx < content.lists.length - 1) {
        var df = cs_getIdx(mode, content.cookie, idx + 1, menu.items[sidx].df);

        cs_refreshList(content.lists[idx + 1], cs_getOptions(menu.items[sidx]), df);
        if (content.cookie) {
            cs_setCookie(content.cookie + "_" + (idx + 1), df);
        }

        if (idx + 1 < content.lists.length) {
            if (disable_empty_list) {
                content.lists[idx + 1].disabled = false;
            }
            if (hide_empty_list) {
                content.lists[idx + 1].style.display = "";
            }

            cs_updateListGroup(content, idx + 1, df, mode);
        }
    }
    else {
        for (var s = idx + 1; s < content.lists.length; s++) {
            cs_emptyList(content.lists[s]);

            if (disable_empty_list) {
                content.lists[s].disabled = true;
            }
            if (hide_empty_list) {
                content.lists[s].style.display = "none";
            }

            if (content.cookie) {
                cs_setCookie(content.cookie + "_" + s, "");
            }
        }
    }
}
function cs_initListGroup(content, mode) {
    var df = cs_getIdx(mode, content.cookie, 0, content.menu.df);

    cs_refreshList(content.lists[0], cs_getOptions(content.menu), df);
    if (content.cookie) {
        cs_setCookie(content.cookie + "_" + 0, df);
    }

    cs_updateListGroup(content, 0, df, mode);
}

function cs_updateList() {
    var content = this.content;
    for (var i = 0; i < content.lists.length; i++) {
        if (content.lists[i] == this) {
            if (content.cookie) {
                cs_setCookie(content.cookie + "_" + i, this.selectedIndex);
            }

            if (i < content.lists.length - 1) {
                cs_updateListGroup(content, i, this.selectedIndex, "");
            }
        }
    }
}

function cs_getIdx(mode, name, idx, df) {
    if (mode) {
        var cs_idx = cs_getCookie(name + "_" + idx);
        if (cs_idx != "") {
            df = parseInt(cs_idx);
        }
    }
    return df;
}

function _setCookie(name, value) {
    document.cookie = name + "=" + value;
}
function cs_setCookie(name, value) {
    setTimeout("_setCookie('" + name + "','" + value + "')", 0);
}

function cs_getCookie(name) {
    var cookieRE = new RegExp(name + "=([^;]+)");
    if (document.cookie.search(cookieRE) != -1) {
        return RegExp.$1;
    }
    else {
        return "";
    }
}

// ----
function addListGroup(n, tm) {
    if (cs_goodContent) {
        cs_curTop = new cs_topmenuOBJ(tm);
        cs_curSub = null;

        var c = cs_findContent(n);
        if (c == null) {
            cs_content[cs_content.length] = new cs_contentOBJ(n, cs_curTop);
        }
        else {
            delete(c.menu);
            c.menu = cs_curTop;
        }
    }
}

function addList(n, dis, link, sub, df) {
    if (cs_goodContent) {
        cs_curSub = cs_findMenu(n);

        if (cs_curSub != null) {
            cs_curSub.addM(dis, link || "", sub);
            if (typeof (df) != "undefined") {
                cs_curSub.df = cs_curSub.items.length - 1;
            }
        }
        else {
            cs_badContent(n);
        }
    }
}

function addOption(n, dis, link, df) {
    if (cs_goodContent) {
        cs_curSub = cs_findMenu(n);

        if (cs_curSub != null) {
            cs_curSub.addL(dis, link || "");
            if (typeof (df) != "undefined") {
                cs_curSub.df = cs_curSub.items.length - 1;
            }
        }
        else {
            cs_badContent(n);
        }
    }
}

function initListGroup(n) {
    var _content = cs_findContent(n), count = 0;
    if (_content != null) {
        content = new cs_contentOBJ("cs_" + n, _content.menu);
        cs_content[cs_content.length] = content;

        for (var i = 1; i < initListGroup.arguments.length; i++) {
            if (typeof (arguments[i]) == "object" && arguments[i].tagName && arguments[i].tagName == "SELECT") {
                content.lists[count] = arguments[i];

                arguments[i].onchange = cs_updateList;
                arguments[i].content = content;
                arguments[i].idx = count++;
            }
            else if (typeof (arguments[i]) == "string" && /^[a-zA-Z_]\w*$/.test(arguments[i])) {
                content.cookie = arguments[i];
            }
        }

        if (content.lists.length > 0) {
            cs_initListGroup(content, content.cookie);
        }
    }
}

function resetListGroup(n) {
    var content = cs_findContent("cs_" + n);
    if (content != null && content.lists.length > 0) {
        cs_initListGroup(content, "");
    }
}
// ------